Systems and methods for server management

ABSTRACT

Exemplary systems and methods for server management are provided. An exemplary system comprises a plurality of servers, with each server having the ability to access a database or, in some embodiments, be configured to perform a calculation, computation or make a determination of a particular value, values or other information. A communications network delivers queries to each server whereby a look-up table directs query processing by the servers. Further embodiments of the system feature a program logic controller for rebalancing the workload of the network servers. Exemplary methods of processing queries on the system comprise submitting a query to the network, communicating the query to each server in the network and each server looking-up on a look-up table the processing responsibilities of the servers in the network. The query is processed by the server having primary responsibility for processing the query while other the servers monitor query processing. Transmission of a query result to a user typically completes the process.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation and claims the priority benefit ofU.S. patent application Ser. No. 12/854,046 filed Aug. 10, 2010, nowU.S. Pat. No. 7,962,509, and entitled “Systems and Methods for ServerManagement,” which is a continuation and claims the priority benefit ofU.S. patent application Ser. No. 11/355,327 filed Feb. 15, 2006, nowU.S. Pat. No. 7,979,460, and entitled “Systems and Methods for ServerManagement.” This application is related to U.S. patent application Ser.No. 11/367,174 filed Mar. 3, 2006, now U.S. Pat. No. 7,716,238, andentitled “Systems and Methods for Server Management.” The disclosure ofeach of these applications is incorporated herein by reference.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention relates generally to computer networks, and moreparticularly to network server balancing and redundancy.

2. Description of Related Art

FIG. 1 shows a simplified architecture 100 for a prior art approach tonetwork server management. Three servers are illustrated: server 110containing a first segment of a database; server 120 containing a secondsegment of the database; and server 130 containing a third segment ofthe same database. Also illustrated in FIG. 1 is communications network140 responsible for transferring information between users 150 through170 and one of the three servers responsible for responding to aparticular query.

The prior art approach to server management illustrated in FIG. 1suffers from several drawbacks.

First, the entire database in FIG. 1 is divided between three separateservers. No single server contains the entire database nor do segmentsof the database overlap amongst the servers. For example, in the case ofa phone book database, server A (110) may comprise entries A thru H,server B (120) may comprise entries I through Q, and server C (130) maycomprise entries R-Z. Accordingly, in the event one of the three serversillustrated in FIG. 1 experiences a delay or failure, the other serversin the network are unable to respond on behalf of the failed server,because they lack the requisite data. As a result, certain responses toqueries may be delayed or go unprocessed.

Second, even if all of the servers in the illustrated network of FIG. 1stored the requisite data and received all queries, there is nomechanism for one server to monitor whether another server withresponsibility for processing a query is actually processing the query.As a result, one server may have available processing capability goingunutilized as that server is under the misconception that another serveris processing the request.

Third, the prior art architecture illustrated in FIG. 1 is not scalable.Server limitations (e.g. processor speed or storage capacity) dictatethe number of queries a server can process. Installation of additionalservers to store additional information and process additional queriesoften requires shutting down an entire network. Additional downtime isoften imposed by rearranging data on existing servers. Consequently, asevidenced by the prior art architecture illustrated in FIG. 1, there isa need for improved systems and methods of server management.

SUMMARY OF THE INVENTION

The present invention provides exemplary systems and methods for servermanagement. An exemplary system comprises a plurality of servers, eachserver having the ability to access a database. An exemplarycommunications network allows for queries to be received by all serversin the network, while a look-up table identifies the servers in thenetwork responsible for processing particular queries. Furtherembodiments of the system feature a program logic controller fortracking and rebalancing the workload of the network servers.

An exemplary method of server management comprises installing a copy ofa database (or portion thereof) on each network server, receiving allqueries at all servers, and processing queries as directed by a look-uptable.

An exemplary method of query processing comprises submitting a query toa network, sending the query to every server in the network and eachserver looking-up on a look-up table the server in the network havingprimary responsibility for processing the particular query. Monitoringof the processing of queries in the network is performed by all networkservers. A query result may be transmitted to the user therebycompleting the process.

An exemplary method of rebalancing server load includes determining anoverall query response rate for a network, comparing the overall queryresponse rate for the network to a target overall query response rate,determining a query response rate for each server in the network, andcomparing the query response rates for all of the servers in thenetwork. Based on this method, the primary responsibility for one ormore data segments can be transferred from one server in the networkhaving a relatively slow query response rate to a server in the networkhaving a relatively fast query response rate. This method can beperformed either manually or with the support of an optional programlogic controller. In the event server load is not rebalanced, furtherembodiments of the present invention include methods for introducing anadditional server to the network.

Exemplary methods of introducing an additional server to the networkinclude installing a copy of the database (or portions thereof) used onthe existing servers in the network on the additional server,configuring the additional server to receive all queries and installinga look-up table that either resides on or is accessible by theadditional server to the network. Further embodiments includeconfiguring the additional server to monitor the processing of queriesin the network.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a simplified architecture of a prior art, non-scalable,non-redundant and failure-prone approach to network server management;

FIG. 2 is an exemplary network architecture in which a scalable,redundant and reliable server network may be implemented;

FIG. 3 is an exemplary look-up table according to one embodiment of thepresent invention;

FIG. 4 is an exemplary look-up table according to an exemplary scenarioof server load balancing;

FIG. 5 is an exemplary look-up table according to an exemplary scenarioof server load rebalancing by the addition of a server to the network;

FIG. 6 is a flowchart for one exemplary method of establishing ascalable, redundant and reliable server network according to variousembodiments of the invention;

FIG. 7 is a flowchart for one exemplary method of processing a query ona scalable, redundant and reliable server network according to variousembodiments of the invention;

FIG. 8 is a flowchart for one exemplary method of rebalancing networkserver load either manually or by the use of a program logic controlleraccording to various embodiments of the invention; and

FIG. 9 is a flowchart for one exemplary method of rebalancing networkserver load by the installation of an additional server according tovarious embodiments of the invention.

DETAILED DESCRIPTION

Referring to FIG. 2, an exemplary network architecture 200 isillustrated in which various embodiments of the invention may beimplemented. The exemplary network architecture 200 includes an optionalprogram logic controller 202, an optional master database 204 and alook-up table 300 (FIG. 3). Optional communications linkage 206, servers208 through 218, and communications network 220 also comprise theexemplary network architecture shown in FIG. 2. In some embodiments ofthe present invention, servers 208 through 218 each contain one or moreclocks and/or other timing devices that are maintained in synchrony withone another and/or based upon each clock or other timing deviceperiodically referencing a shared standard through communicationsnetwork 220, such as an atomic clock. Ultimately, some sort of a timingmeans (e.g., clock, timer, etc.) is necessary—as will be explained indetail herein—to ensure that a query has been timely handled by aprimary server before the query is passed to a secondary server forhandling (e.g., response).

Certain timing devices may be better suited to particular configurationsthan others (although they are not necessarily prevented from beingimplemented in those configurations). For example, a clock may be bestsuited for a shared query resource (as described below) whereas a simpletimer may be best suited for responding to individual queries deliveredto the exemplary network architecture 200.

In FIG. 2, queries are generated by users 150 through 170 andcommunicated over communications network 220 to servers 208 through 218.In one exemplary embodiment, communications network 220 uses multicastor broadcast techniques to communicate queries to the servers. In thisexemplary embodiment, all servers receive all queries. Among otherthings, a query may comprise a request for the calculation, computationor determination of a particular value, values or other information.Queries may also comprise a request for a return of information, whichmay further comprise the aforementioned values or other information. Inalternative embodiments, other wired and/or wireless mechanismscommunicate all queries to all servers. In yet further embodiments,queries and/or notice of queries are communicated to a subset of serverscomprising the network, wherein the servers that are not responsible forprocessing or backing up a particular query do not receive the query. Instill further embodiments of the present invention, queries may be heldin a shared resource, that resource comprising a list of outstandingqueries, which can be monitored and/or accessed by the aforementionednetwork of servers. This shared resource may be an intermediate server,some sort of queuing mechanism (e.g., a router), a memory buffer orother means for maintaining a list of queries or the actual queriesthemselves.

Communications network 220 allows each server in the exemplary networkarchitecture 200 to monitor query processing by the other servers in thenetwork. For example, a reply to a query may be broadcast or multicastover the network 200. In alternative embodiments, other forms of serverpeer monitoring are used, such as optional communications linkage 206.In still further embodiments, a subset of servers comprising the networkare monitored by peer servers, wherein the servers that are notresponsible for processing a particular query are not monitored.

In an exemplary embodiment, servers 208 through 218 each contain anentire database or database copy. The contents of each database ordatabase copy can be substantially the same or may have certain segmentsof data omitted. Alternative exemplary embodiments of the presentinvention include an optional master database 204, which can be accessedby all of the servers in the network. Optional database 204 may be inlieu of or in addition to the entire database or database copy installedon each server. In the exemplary network architecture 200, an entiredatabase or database copy contains the information queried by users 150through 170. Database examples include telephone directories, customerdatabases or catalogs of products and/or services. Categories of otherdatabase content are within the scope of the present invention. In otherembodiments of the present invention, servers 208 through 218 may beconfigured to process and/or respond to the aforementioned queries(e.g., be programmed with the necessary logic to respond to a particularcalculation request). This configuration may be in addition to or inplace of the aforementioned database or database copy.

Each database or database copy comprises one or more segments of data ordata segments. In some exemplary embodiments, segments of data aredetermined based on the nature of the underlying data. For example, thetwenty-six letters of the English alphabet may represent twenty-sixsegments of data forming a telephone directory database. Twenty-sixservers may each be assigned a primary responsibility for processingqueries corresponding to a particular letter of the alphabet. Forexample, one server is assigned the primary responsibility forprocessing queries corresponding to last names beginning with the letter“A,” while a second server is assigned the primary responsibility forprocessing queries corresponding to last names beginning with the letter“B.” Likewise, a third server is assigned primary responsibility forprocessing queries corresponding to last names beginning with the letter“C,” and so on.

In alternate embodiments, responsibilities for each server in a networkmay be determined based upon an arbitrary designation of data segments.For example, in some embodiments, a database may be segmented into asmany equally-sized megabytes of data as there are servers forming thenetwork. Various formulas may also be used to weight segmentdeterminations based on averaging or estimating query frequency for aparticular segment of the data or certain processing requirementsrelated thereto.

In an exemplary embodiment, segments of data in the database aremanually or automatically cataloged by look-up table 300 (FIG. 3). In analternative embodiment, an optional program logic controller 202 maydivide a database into optimized segments of data that are automaticallyupdated and reflected in look-up table 300. In an exemplary embodimentof the server network, program logic controller 202 monitors, balancesand/or rebalances server load, based on factors such as changes inserver usage, server storage capacity and/or query frequency.

Turning to FIG. 3, exemplary look-up table 300 is shown. In accordancewith some embodiments of the invention, a look-up table such as look-uptable 300 directs query processing by network servers. The presence ofcolumns and headers in look-up table 300 is for illustrative purposesand not meant to impose any particular data structure or format.

In look-up table 300, servers 208 through 218 (FIG. 2) are identified incolumn 310. In some embodiments of the present invention, each of theseservers contains a copy of look-up table 300. In alternativeembodiments, the servers can access a centralized look-up table.

Look-up table 300, in column 320, identifies the data segments installedin each of the servers. In the illustrated network architecture of FIG.2, look-up table 300 reflects that an entire database comprising datasegments 1-6 is installed in servers 208 through 218.

In exemplary embodiments, each server in a network is assigned one ormore unique data segments. Collectively, each unique data segmentassigned to each of the servers on the network comprises the entiredatabase. The unique portion of the database or data segments representthat particular server's responsibility for processing when a query forinformation located in the server's unique data segment or segments iscommunicated to all of the servers on the network. In response to aquery transmitted to all of the servers on the network, the particularserver responsible for the data segment(s) containing the requestedinformation will be allocated a certain amount of time to process thequery while the other servers monitor the processing. Accordingly, theserver first responsible for processing a query is deemed to haveprimary responsibility for processing queries for information located inthe server's unique data segment(s).

The primary responsibilities for each server in the network areidentified in column 330 of look-up table 300. As shown in FIG. 3,server 208 is assigned primary responsibility for data segment 1; server210 is assigned primary responsibility for data segment 2; server 212 isassigned primary responsibility for data segment 3; server 214 isassigned primary responsibility for data segment 4; server 216 isassigned primary responsibility for data segment 5; and server 218 isassigned primary responsibility for data segment 6.

In look-up table 300, each server is allocated 100 milliseconds in whichto complete its assigned primary responsibility (e.g. responding to aquery) as shown in column 340. Exemplary look-up table 300 also includesan assigned time for secondary query initiation as reflected in column370. In the event a particular server assigned primary responsibilitycannot process or respond to a particular query in its allocated time, aserver having secondary responsibility is assigned a particular time toinitiate the query. For example, should server 208 fail to respondwithin 100 milliseconds to a query of data segment 1 (for which server208 has been assigned primary responsibility), server 210 will initiateprocessing of the same query following the expiration of server 208'sallocated primary response time (e.g. at 101 milliseconds as reflectedin column 360). In some embodiments of the present invention, theassignment of a second query initiation time (col. 370) may not benecessary whereby a second server simply takes on processingresponsibilities with the expiration of the allocated primary queryresponse time (column 340) if there has not been a response to thequery.

In look-up table 300, server 208 is assigned secondary responsibilityfor data segment 6; server 210 is assigned secondary responsibility fordata segment 1; server 212 is assigned secondary responsibility for datasegment 2; server 214 is assigned secondary responsibility for datasegment 3; server 216 is assigned secondary responsibility for datasegment 4; and server 218 is assigned secondary responsibility for datasegment 5 as reflected in column 360. In exemplary embodiments,secondary responsibility for querying a particular segment of data isnot assigned to the same server having primary responsibility for thesame segment of data, in order to enhance network reliability in theevent of a server delay or failure. That is, the delay or failure of oneserver should not adversely impair the ability of a second server tostep-in and respond to a particular query.

Look-up table 300 indicates the exemplary server network is operatingwith double redundancy as reflected in column 350. If the desiredredundancy level indicates the server network is operating with doubleredundancy, a third server with tertiary responsibility will attempt toprocess any query missed by the respective primary and secondaryservers.

As illustrated by the exemplary look-up table 300, tertiaryresponsibilities and respective query initiation times are assigned toserver networks operating with double redundancy. In an exemplaryembodiment, tertiary responsibility for querying a particular segment ofdata is not assigned to the same server having secondary responsibilityfor the same segment of data. Double redundancy enhances networkreliability and performance in the event two servers experience afailure, because a third server can ‘step-in’ and process a query for asegment of data for which it has tertiary responsibility.

According to some exemplary embodiments of the present invention, suchas illustrated by exemplary network architecture 200, the presence ofoptional master database 204 in addition to the database or databasecopy stored on each of servers 208 through 218 provides an additionalfail-safe mechanism that can be accessed in the event each server withan assigned responsibility (i.e. primary, secondary, tertiary or so on)for a particular query should fail to process its assignedresponsibility within the allocated time. Provided the server containingoptional master database 204 remains functional, no query should gounprocessed in such a network, because the server containing optionalmaster database 204 will step-in and process the query or,alternatively, may be accessed by another capable server in the networkto obtain, process and deliver the necessary data.

Turning to FIG. 4, an exemplary look-up table according to an exemplaryscenario of server load balancing is shown. Query response times, serverusage, volume of stored data and query frequency are just a few of thereasons necessitating the balancing and/or rebalancing of serverresponsibilities and/or stored databases. An optional program logiccontroller 202 (FIG. 2) can be used to monitor query response times,server usage, volume of stored data and/or query frequency andautomatically rebalance a server network. In some embodiments, theseadjustments are made manually. In either case, increased query responsetimes are typically the first indication that a server network might bein need of rebalancing. One way of balancing and/or rebalancing a servernetwork is illustrated by exemplary look-table 400. In exemplary look-uptable 400, extra server storage capacity is created by the selectiveinstallation of data segments that comprise each server's database.

The categories of information contained in look-up table 400 are similarto the categories of information contained in exemplary look-up table300 (FIG. 3), with the exception that column 420 reflects that eachserver in the network does not contain an entire copy of the database.Unlike the illustrative network reflected in exemplary look-up table300, segments of data are omitted from the data segments installed inthe servers shown in column 420.

As illustrated in column 420 of exemplary look-up table 400, datasegments 1-2 and 4-6 are installed in server 208. Data segment 3 isomitted from the database in server 208. Server 208 is assigned primaryresponsibility for data segment 1 as shown in column 330. Server 208 isalso assigned secondary responsibility for data segment 6 (column 360),and assigned tertiary responsibility for data segment 5 (column 380).

Additionally, as illustrated in column 420, data segments 1-3 and 5-6are installed in server 210; data segments 1-4 and 6 are installed inserver 212; data segments 1-5 are installed in server 214; data segments2-6 are installed in server 216; and data segments 1 and 3-6 areinstalled in server 218.

The exemplary scenario of server load balancing and/or rebalancingillustrated in exemplary look-up table 400 can be applied to theexemplary network shown in FIG. 2 and FIG. 3, resulting in a savings ofsix data segments or the equivalent of the storage capacity of oneserver. As shown in column 350 of FIG. 4, the exemplary scenario ofserver load balancing and/or rebalancing retains the double redundancylevel of the network. The extra server storage capacity can be used tostore data segments transferred from servers experiencing a slowresponse time, as will be described in connection with FIG. 7 herein.

Turning to FIG. 5, an exemplary look-up table 500 whereby server load isrebalanced by the addition of a server to a network is shown. Thecategories of information contained in look-up table 500 are similar tothe categories of information contained in exemplary look-up table 300(FIG. 3), with the exception that before server installation (columns530 & 570) and after server installation (columns 540 & 580) comparisonsare shown.

As shown in FIG. 5, the database installed on each server remains thesame throughout the installation process while the number of networkservers and their responsibilities (i.e. primary, secondary and/ortertiary and so on) are changed. In column 520 of exemplary look-uptable 500, servers 208 through 218 each contain a database comprisingdata segments 1-50. Data segments 1-50 have been installed in theadditional server (titled “NEW”) prior to initiating serverinstallation. Because each server contains a database comprising thesame data segments, the network can continue operating while server NEWis added to the network. That is, the continuous operating of thenetwork is not dependent on any one server. When server NEW is broughtonline, the before server installation settings (columns 530 & 570) arereplaced by the after server installation settings (columns 540 & 580),and the network continues to operate uninterrupted.

As an example of server load rebalancing by the installation of anadditional server, assume in exemplary look-up table 500, before theinstallation of server NEW, server 208, server 210, server 212, andserver 214 are each processing queries at an unacceptably slow rate.Also assume that server 216 is processing queries at an acceptable rate,and server 218 is processing queries at a maximum rate. As shown incolumn 560, the network is operating at a single rate of redundancy orredundancy level.

Server load rebalancing based on the exemplary method described inconnection with FIG. 8 herein will result in server 208 transferringprimary responsibility for data segments 7-8 (column 530) to server 210(column 540), server 210 transferring primary responsibility for datasegments 14-17 (column 530) to server 212 (column 540), and server 212transferring primary responsibility for data segments 21-26 (column 530)to server NEW (column 540). Likewise, server load rebalancing results inserver 214 transferring primary responsibility for data segment 27(column 530) to server NEW (column 540) and transferring primaryresponsibility for data segments 35-36 (column 530) to server 216(column 540). Finally, server 216 transfers primary responsibility fordata segments 42-43 (column 530) to server 218 (column 540).

As evidenced by comparing the number of data segments for each networkserver before installation (column 530) to after installation (column540), primary responsibility for server 208 decreases by two datasegments; primary responsibility for server 210 decreases by two datasegments; primary responsibility for server 212 decreases by two datasegments and primary responsibility for server 214 decreases by threedata segments. In total, the workload of these four servers decreases bynine data segments. After the installation of server NEW, primaryresponsibility for server 216 remains unchanged and primaryresponsibility for server 218 increases by two data segments. Finally,primary responsibility for server NEW is initiated with seven datasegments (column 540). As shown in column 560, the network remainsoperating at a single rate of redundancy.

Turning to FIG. 6, an exemplary flowchart for one method of establishinga scalable, redundant and fault-tolerant server network according to anexemplary embodiment of the present invention is shown.

At step 602, an optional program logic controller 202 (FIG. 2) isinstalled as part of the exemplary network architecture 200 (FIG. 2). Inan exemplary embodiment of the server network, program logic controller202 monitors and rebalances server load, based in part on changes inserver usage, server storage and query frequency. Optional program logiccontroller 202 reduces the need for network manual server maintenanceand associated equipment upgrades and purchases, through automating, forexample, the aforementioned functions.

At step 604, a database is installed on each server in the exemplarynetwork architecture 200. The contents of each installed database orinstalled database copy can be substantially the same or may havecertain segments of data omitted. Database examples include but are notlimited to telephone directories, customer databases or catalogs ofproducts and/or services.

At step 606, an optional master database 204 (FIG. 2) is installed inthe server network. Optional master database 204 may be accessed by allof the servers in the network should such access ever prove to benecessary.

At step 608, network servers in the exemplary network architecture 200are configured to receive all queries. In exemplary embodiments,communications network 220 uses multicasting or broadcasting tocommunicate all queries to all servers. In these embodiments, allservers receive all queries. In alternative embodiments, other wiredand/or wireless mechanisms communicate all queries to all servers. Inyet further embodiments, queries and/or notice of queries arecommunicated to a subset of servers comprising the network, wherein theservers that are not responsible for processing a particular query donot receive the query.

At step 610, a look-up table 300 (FIG. 3) is installed for each ofservers 208 through 218 (FIG. 2) that comprise the exemplary networkarchitecture 200. In exemplary embodiments, look-up table 300 directsserver query processing. Look-up-table 300 may be local or remoterelative to the server 208 through 218.

At step 612, a server redundancy level may be established for exemplarynetwork architecture 200. Server redundancy level is a function of thetolerance for server network failure. The lesser the tolerance forserver network failure, the higher the server redundancy level. Forexample, users that can tolerate an occasional network failure mightestablish a single redundancy level as shown in FIG. 5, whereas usersthat can not tolerate an occasional network failure might establish adouble redundancy level as shown in FIG. 4. As illustrated by exemplarylook-up table 300, a single redundancy level signifies that if a serverassigned primary responsibility fails to process an assigned querywithin an allocated period of time, another server with secondaryresponsibility for the same segment of data will attempt to process thequery. A double redundancy level signifies that a third server assignedtertiary responsibility will attempt to process any query missed by theservers assigned primary and secondary responsibilities. Assuming theinstallation of an entire database on each network server as illustratedin FIG. 2, FIG. 3, and FIG. 5, the redundancy level of a server networkis limited only by the number of servers (e.g. servers 208 through 218)on the network.

At step 614, servers comprising the exemplary network architecture 200are configured upon receipt of each query to check the look-up tableinstalled at step 610. In exemplary embodiments, look-up table 300identifies the data segments installed in each server.

At step 616, servers comprising the exemplary network architecture 200are configured to process queries per look-up table 300. Look-up table300, in the present example, allocates each server 100 milliseconds inwhich to complete its assigned primary responsibility.

At step 618, servers comprising the exemplary network architecture 200are configured to monitor query processing by the other servers in thenetwork. In exemplary embodiments, communications network 220 allowseach server in the exemplary network architecture 200 to monitor queryprocessing by the other servers in the network by ‘listening,’ forexample, for a broadcast or multicast reply to the query. In alternativeembodiments, other forms of server peer monitoring are used, such asoptional communications linkage 206. In yet further embodiments, asubset of servers comprising the network are monitored by peer servers,wherein the servers that are not to be responsible for processing aparticular query are not monitored.

At step 620, servers comprising the exemplary network architecture 200are configured to transmit query results to users.

At step 622, servers comprising the exemplary network architecture 200are configured to reset upon transmission of a query result to a user.That is, present response time is reset to zero.

Turning to FIG. 7, a flowchart for an exemplary method of processing aquery on the exemplary network architecture 200 (FIG. 2) is shown.

At step 710, a query is submitted to exemplary network architecture 200.In the case of a server network for a telephone directory database, user150 (FIG. 2) submits a query for an address corresponding to a personhaving the last name of Jones.

At step 720, the submitted query is communicated to network servers.Here, the query for an address corresponding to a person having the lastname of Jones is multicast through communications network 220 (FIG. 2)to all servers in the exemplary network architecture 200.

At step 730, the identity of the server having primary responsibilityfor processing the submitted query is determined based upon referencinga look-up table. Here, the look-up table for the queried telephonedirectory database reflects that the tenth server of twenty-six servers(each corresponding to a letter of the alphabet) is assigned primaryresponsibility for processing queries corresponding to last namesbeginning with the letter “J.” Therefore, server ten has the primaryresponsibility of querying its data segment for the address of Jones.

At step 740, the submitted query is processed (or attempted to beprocessed) by the responsible server. In this particular case, serverten processes the query for the address corresponding to Jones.

At step 750, the processing of the submitted query by the server havingprimary responsibility is monitored by the other servers in the network.In exemplary embodiments, communications network 220 allows each serverin the exemplary network architecture 200 to monitor query processing bythe other servers in the network through, for example, listening for amulticast or broadcast reply to the query. In alternative embodiments,other forms of server peer monitoring are used, such as through optionalcommunications linkage 206. In yet further embodiments, a subset ofservers comprising the network are monitored by peer servers, whereinthe servers that are not to be responsible for processing a particularquery are not monitored. In this particular example, twenty-five of thetwenty-six servers comprising the server network for the telephonedirectory database monitor the processing by server ten for the addresscorresponding to Jones.

At step 760, it is determined whether the submitted query has beenprocessed within the allocated time. Referring to look-up table 300(FIG. 3), each server is allocated 100 milliseconds in which to completeits assigned primary responsibility. In this particular example, serverten determined within 100 milliseconds that the address corresponding toJones is 2200 Geng Road, Palo Alto, Calif.

At step 770, should the query not be processed within the allocated timeby the server having primary responsibility for the query (e.g. due toserver delay or server failure), a server with secondary responsibilityis determined based on the method described in connection with step 730.The server with secondary responsibility then processes the query as setforth in steps 740-750. Other backup and/or secondary servers continueto await an indication the query has been timely processed in step 760.

At step 780, the query result is transmitted to the user who submittedthe query via, for example, a multicast or broadcast methodology. Inthis particular example, user 150 (FIG. 2) will receive the address forJones via a multicast transmission over communications network 220.

At step 790, network servers reset for the next query. In thisparticular example, the twenty-six servers comprising the telephonedirectory database will reset their present processing time to zero inanticipation of the next query to be submitted by a user. That is, thenetwork servers await the arrival of a new query wherein overallprocessing time with regard to a particular query begins relative thatparticular query and its own timestamp (i.e., the overall time since thequery was made or was received by the network servers).

Turning to FIG. 8, a flowchart for one exemplary method of evaluatingand rebalancing network server load according to an exemplary embodimentof the invention is shown. All steps in FIG. 8 can be performed eithermanually or with the assistance of an optional program logic controller202 (FIG. 2).

At step 810, an overall network query response rate is determined. Forexample, the average time it takes to process each query submitted tothe exemplary network architecture 200 (FIG. 2) can be determined for atwenty-four hour period either manually or by an optional program logiccontroller 202. Various other time periods or measures of response timemay be used.

At step 820, the overall network query response rate as determined bystep 810 is compared to a target overall network query response rate.For example, with respect to the telephone directory database describedin connection with FIG. 7, the particular telephone company responsiblefor the telephone directory database might determine, on average, itdesires to have all queries processed within 100 milliseconds. Thiscomparison represents a measure by which the server network can beevaluated apart from the performance of the constituent servers.

At step 830, individual server query response rates are determined. Forexample, the average time it takes each of servers 208 through 218 inFIG. 2 to process each query submitted in the exemplary networkarchitecture 200 can be determined for a twenty-four hour period eithermanually or by an optional program logic controller 202 or throughvarious other periods and measures of time.

At step 840, the response rates for all of the servers are compared. Forexample, in the exemplary embodiment illustrated in FIG. 5 and describedherein, the response rates of server 208, server 210, server 212, andserver 214 were slower than the response rates of server 216 and server218, which indicated that servers 208 through 214 warranted a reductionin the number of data segments for which they had primaryresponsibility.

At step 850, the primary responsibilities for particular data segmentsare transferred from the servers having slower query response rates tothe servers having faster query response rates. For example, asdescribed in connection with FIG. 5, server 208 transferred primaryresponsibility for data segments 7-8 (two data segments) to server 210,server 210 transferred primary responsibility for data segments 14-17(four data segments) to server 212.

At step 860, an overall network query response rate is re-determined inthe same fashion as described in connection with step 810.

At step 870, the re-determined overall network query response rate asdetermined at step 860 is re-compared to the target overall networkresponse rate.

At step 880, a decision is made as to whether the performance of therebalanced server network measures favorably against the target networkresponse rate. If the performance of the rebalanced server network issatisfactory, the overall network query response rate can beperiodically re-determined, as described in connection with step 810. Ifthe performance of the rebalanced server network is not satisfactory,then step 890 may need to be undertaken.

At step 890, an additional server is installed in the server network, asdescribed in connection with the exemplary method shown in FIG. 9.

Turning to FIG. 9, a flowchart for an exemplary method of rebalancingnetwork server load by the installation of an additional server isshown.

At step 902, a database or database copy corresponding to the databaseused in the existing server network is installed on the additionalserver.

At step 904, an optional master database 204 (FIG. 2), is madeaccessible to the additional server to the network. This optional masterdatabase may have previously been made available to all other servers inthe network.

At step 906, the additional server is configured to receive all queriessubmitted to the server network. In the example shown in FIG. 2, userqueries are directed through communications network 220 (FIG. 2) to allservers in the network. In yet further embodiments, queries and/ornotice of queries are communicated to a subset of servers comprising thenetwork.

At step 908, a look-up table, such as exemplary look-up table 500 (FIG.5), is either installed on the additional server or made accessible tothe additional server. As shown in column 510 of exemplary look-up table500, the look-up table reflects the presence of the additional server.

At step 910, the additional server to the server network is configuredto check the modified look-up table described in step 908.

At step 912, the additional server to the network is configured toprocess queries.

At step 914, the additional server to the network is configured tomonitor query processing by the other servers in the network.

At step 916, the additional server to the network is configured totransmit query results to the user.

At step 918, the additional server to the network is configured to resetits present response time in preparation for the next query to besubmitted over the network.

The present invention is described above with reference to exemplaryembodiments. It will be apparent to those skilled in the art thatvarious modifications may be made and other embodiments can be usedwithout departing from the broader scope of the present invention.Therefore, these and other variations upon the exemplary embodiments areintended to be covered by the present invention.

What is claimed is:
 1. A method for processing a user-generated query,the method comprising: receiving the query at each of a plurality ofservers in a network, where each of the plurality of servers includes: adatabase storing one or more data segments accessed during server queryprocessing, and a look-up table stored in memory for directing serverquery processing upon receipt of the user-generated query communicatedto each of the plurality of servers, wherein the look-up table:allocates an allotment of time to each server to process theuser-generated query, establishes a single redundancy level for theplurality of servers, wherein the single redundancy level includes afirst server from the plurality of servers assigned primaryresponsibility for processing the user-generated query and a secondserver from the plurality of servers assigned secondary responsibilityfor processing the user-generated query when the first server fails toprocess the user-generated query within the allocated time, establishesa double redundancy level for the plurality of servers, the doubleredundancy level including a third server of the plurality of serversassigned tertiary responsibility for processing the user-generated querywhen the first server having primary responsibility and the secondserver having secondary responsibility for server query processing failto process the user-generated query within the allocated time,establishes a master server from the plurality of servers containing amaster database, wherein the master server processes the user-generatedquery when the servers having assigned primary, secondary, and tertiaryresponsibility for server query processing fail to process theuser-generated query within the allocated time, and the master server isaccessible by all other servers, at least one of the other serversaccessing the master database when the master server fails to processthe query, and the at least one of the other servers processes anddelivers the necessary data so that no query is left unprocessed; anddetermining the identity of the first server processing theuser-generated query at the first server; transmitting a query result tothe user who submitted the user-generated query; and resetting each ofthe plurality of servers for processing of a subsequent user-generatedquery upon successful processing of the user-generated query.
 2. Themethod of claim 1, wherein the user-generated query is received at eachof the plurality of servers via a multicast transmission.
 3. The methodof claim 1, wherein the user-generated query is received at each of theplurality of servers via a broadcast transmission.
 4. The method ofclaim 1, further comprising monitoring the processing of theuser-generated query, wherein monitoring the processing of the query isperformed by a peer server having no assigned responsibility forprocessing the query.
 5. A system for processing a user-generated query,the system comprising: a plurality of servers coupled to acommunications network, and that: receive a user-generated query,process the user-generated query as directed by a look-up table, andtransmit a query result to a user who submitted the user-generatedquery, wherein each of the plurality of servers is reset for processingof a subsequent user-generated query upon successful processing of thequery, and each of the plurality of servers includes: a database storingone or more data segments accessed during server query processing, and alook-up table stored in memory for directing server query processingupon receipt of the user-generated query communicated to each of theplurality of servers, wherein the look-up table: allocates an allotmentof time to each server to process the user-generated query, establishesa single redundancy level for the plurality of servers, wherein thesingle redundancy level includes a first server of the plurality ofservers assigned primary responsibility for processing theuser-generated query and a second server of the plurality of serversassigned secondary responsibility for processing the user-generatedquery when the first server fails to process the user-generated querywithin the allocated time, establishes a double redundancy level for theplurality of servers, the double redundancy level including a thirdserver of the plurality of servers assigned tertiary responsibility forprocessing the user-generated query when the first server having primaryresponsibility and the second server having secondary responsibility forserver query fail to process the user-generated query within theallocated time, and establishes a master server from the plurality ofservers containing a master database, wherein the master serverprocesses the user-generated query when the servers having assignedprimary, secondary, and tertiary responsibility for server queryprocessing fail to process the user-generated query within the allocatedtime, and the master server is accessible by all other servers, at leastone of the other servers accessing the master database when the masterserver fails to process the query, and the at least one of the otherservers processes and delivers the necessary data so that no query isleft unprocessed.
 6. A non-transitory computer readable storage mediumhaving embodied thereon a program, the program being executable by aprocessor to perform a method for processing a user-generated query, themethod comprising: receiving the query at each of a plurality ofservers; allocating an allotment of time to each server to process theuser-generated query; establishing a single redundancy level for theplurality of servers, wherein the single redundancy level includes afirst server of the plurality of servers assigned primary responsibilityfor processing the user-generated query and a second server of theplurality of servers assigned secondary responsibility for processingthe user-generated query when the first server fails to process theuser-generated query within the allocated time; establishing a doubleredundancy level for the plurality of servers, the double redundancylevel including a third server of the plurality of servers assignedtertiary responsibility for processing the user-generated query when thefirst server having primary responsibility and the second server havingsecondary responsibility for server query processing fail to process theuser-generated query within the allocated time; establishing a masterserver from the plurality of servers containing a master database,wherein the master server processes assigned responsibility forprocessing the user-generated query when the servers having assignedprimary, secondary, and tertiary responsibility for server queryprocessing fail to process the user-generated query within the allocatedtime, and the master server is accessible by all other servers, at leastone of the other servers accessing the master database when the masterserver fails to process the query, and the at least one of the otherservers processes and delivers the necessary data so that no query isleft unprocessed; determining the identity of the server from theplurality of servers assigned primary responsibility for processing theuser-generated query according to a look-up table; processing theuser-generated query; transmitting a query result to the user whosubmitted the user-generated query; and resetting each of the pluralityof servers for processing of a subsequent user-generated query uponsuccessful processing of the query.